Modern microprocessors may perform numerous functions requiring a change of context state. For example, a microprocessor may change context state information when switching between groups of instructions, such as software “threads”. In changing between software threads, for example, context state of one group of instructions may be saved to a memory location and the context state of another group of instructions may be restored from memory and loaded into the microprocessor.
In reference to software threads, “context state” may refer to a portion of each software thread's state that is to be maintained between context switches within a processor. Context state may be stored in processor architectural registers, control registers, or other storage areas, such as memory. Context state is typically represented by a number of bits, the value of which define a particular context state.
The term, “context switch”, typically refers to a change from one processor execution state to another, such as a software thread switch. A context switch is typically performed either by the operating system or by a user's program. For example, a context switch may occur as a result of calling a subroutine within a user's program, in which the calling program's context is saved in a storage area, such as a “stack”, when the call to the subroutine occurs and restored from the storage area when returning from the called subroutine.
Typically, context state is saved to memory or restored to processor registers in groups that may include more context state information that is needed at a given time, due to the organization of context state save areas in memory and the granularity with which these save areas are addressed. As a result, an unnecessarily large number of processor state information may be replaced each time context state is restored from memory. For example, an operating system or user program may only request a subset of context state information pertaining to a particular software thread or other process being performed within a processor. However, prior art context state save and restore mechanisms may require that all context state pertaining to a thread or other process be restored and/or saved in order to retrieve any context state information pertaining to the thread or process of interest.
Prior art context state management techniques can, therefore, result in performance and resource inefficiencies.